<?php
/**
 * API入口文件
 * 处理所有API请求的路由
 */

// 设置错误报告
error_reporting(E_ALL);
ini_set('display_errors', 0);
ini_set('log_errors', 1);
ini_set('error_log', __DIR__ . '/../logs/api_errors.log');

// 创建日志目录（如果不存在）
if (!is_dir(__DIR__ . '/../logs')) {
    mkdir(__DIR__ . '/../logs', 0755, true);
}

// 允许跨域请求
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type, Authorization');

// 处理预检请求
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
    header('HTTP/1.1 200 OK');
    exit;
}

// 获取请求的API端点
$requestUri = $_SERVER['REQUEST_URI'];
$basePath = '/api/';

// 提取API路径
$path = parse_url($requestUri, PHP_URL_PATH);
$endpoint = '';

if (strpos($path, $basePath) === 0) {
    $endpoint = substr($path, strlen($basePath));
    // 移除尾部斜杠
    $endpoint = rtrim($endpoint, '/');
}

// 如果没有指定端点，返回API列表
if (empty($endpoint)) {
    header('Content-Type: application/json');
    echo json_encode([
        'status' => 'ok',
        'message' => 'KidsMind API',
        'version' => '1.0',
        'endpoints' => [
            'users' => '/api/users',
            'achievements' => '/api/achievements',
            'games' => '/api/games',
            'skills' => '/api/skills'
        ]
    ]);
    exit;
}

// 根据端点加载相应的API处理文件
$endpointFile = __DIR__ . '/' . $endpoint . '.php';

if (file_exists($endpointFile)) {
    require_once $endpointFile;
} else {
    // API端点不存在
    header('Content-Type: application/json');
    http_response_code(404);
    echo json_encode([
        'status' => 'error',
        'message' => 'API endpoint not found'
    ]);
} 